/*
 * Copyright 2010 Christoph Widulle (christoph.widulle@googlemail.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */



package com.android1.amarena2d.nodes;

import com.android1.amarena2d.engine.EngineObject;
import com.android1.amarena2d.nodes.behavior.delegates.VolumneDelegate;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;

public class EntityContainer<E extends LeafEntity> extends EngineObject implements LeafEntity, LifecycleObject {

    protected E entity;

    public EntityContainer(E entity) {
        this.entity = entity;
    }

    @Override
    public void init() {
        entity.init();
    }

    @Override
    public void dispose() {
        entity.dispose();
    }

    @Override
    public void enter() {
        entity.enter();
    }

    @Override
    public void exit() {
        entity.exit();
    }

    @Override
    public void render() {
        entity.render();
    }

    @Override
    public boolean isActive() {
        return entity.isActive();
    }

    @Override
    public boolean isPlaying() {
        return entity.isPlaying();
    }

    @Override
    public boolean isVisible() {
        return entity.isVisible();
    }

    @Override
    public boolean isInit() {
        return entity.isInit();
    }

    @Override
    public float getAbsoluteMaxX() {
        return entity.getAbsoluteMaxX();
    }

    @Override
    public float getAbsoluteMinX() {
        return entity.getAbsoluteMinX();
    }

    @Override
    public float getAbsoluteMinY() {
        return entity.getAbsoluteMinY();
    }

    @Override
    public float getAbsoluteMaxY() {
        return entity.getAbsoluteMaxY();
    }

    @Override
    public void translateToLocalCoords(Vector2 out) {
        entity.translateToLocalCoords(out);
    }


    @Override
    public float getOrigionX() {
        return entity.getOrigionX();
    }

    @Override
    public float getOrigionY() {
        return entity.getOrigionY();
    }

    @Override
    public void setOrigionXY(float x, float y) {
         entity.setOrigionXY(x,y);
    }

    @Override
    public String getTag() {
        return entity.getTag();
    }

    @Override
    public void setTag(String tag) {
        entity.setTag(tag);
    }



    @Override
    public float getWidth() {
        return entity.getWidth();
    }

    @Override
    public float getHeight() {
        return entity.getHeight();
    }

    @Override
    public void setSize(float width, float height) {
        entity.setSize(width, height);
    }

    @Override
    public void setWidth(float width) {
        entity.setWidth(width);
    }

    @Override
    public void setHeight(float height) {
        entity.setHeight(height);
    }

    @Override
    public float getX() {
        return entity.getX();
    }

    @Override
    public float getY() {
        return entity.getY();
    }

    @Override
    public void addX(float x) {
        entity.addX(x);
    }

    @Override
    public void addY(float y) {
        entity.addY(y);
    }

    @Override
    public void addXY(float x, float y) {
        entity.addXY(x,y);
    }

    @Override
    public float getAbsoluteX() {
        return entity.getAbsoluteX();
    }

    @Override
    public float getAbsoluteY() {
        return entity.getAbsoluteY();
    }

    @Override
    public void setAbsoluteX(float x) {
        entity.setAbsoluteX(x);
    }

    @Override
    public void setAbsoluteY(float y) {
        entity.setAbsoluteY(y);
    }

    @Override
    public void setX(float x) {
        entity.setX(x);
    }

    @Override
    public void setY(float y) {
        entity.setY(y);
    }

    @Override
    public void setXY(float x, float y) {
        entity.setXY(x, y);
    }

    @Override
    public Vector2 getXY() {
        return entity.getXY();
    }

    @Override
    public void tick(float d) {
       entity.tick(d);
    }

    @Override
    public void setParent(NodeEntity parent) {
        entity.setParent(parent);
    }

    @Override
    public NodeEntity getParent() {
        return entity.getParent();
    }

    @Override
    public int getZOrder() {
        return entity.getZOrder();
    }

    @Override
    public void setZOrder(int zOrder) {
         entity.setZOrder(zOrder);
    }

    @Override
    public float getAlpha() {
        return entity.getAlpha();
    }

    @Override
    public void setAlpha(float value) {
       entity.setAlpha(value);
    }

    @Override
    public void setColor(float r, float g, float b) {
        entity.setColor(r,g,b);
    }

    @Override
    public void setColor(Color color) {
      entity.setColor(color);
    }

    @Override
    public Color getColor() {
        return entity.getColor();
    }

    @Override
    public VolumneDelegate volumne() {
        return entity.volumne();
    }

    @Override
    public boolean hasVolumne() {
        return entity.hasVolumne();
    }
}